package com.itheima.d15_homework.num2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;


/**
 * 题目2:(综合扩展) 剪切文件夹
 */
public class CutFile {
    public static void main(String[] args) throws IOException {
        //把文件夹以及文件夹所有的内容复制到另外一个地方
        //1.创建file对象 键盘输入源路径 目的地
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入源路径：");
        String srcPath = sc.next();
        System.out.println("请输入目的地：");
        String destPath = sc.next();
        File src = new File(srcPath);
        File dest = new File(destPath);
        cutFile(src,dest);



    }

    private static void cutFile(File src, File dest) throws IOException {
        copyFile(src, dest);
        deleteFile(src);
    }

    private static void deleteFile(File src) {
        //1.判断极端情况
        if(!src.exists()){
            System.out.println("源文件不存在！");
        }
        //2.进入文件夹 遍历
        File[] files = src.listFiles();
        for(File file : files){
            if(file.isFile()){
                //3.判断 是文件 删除
                file.delete();

            }else{
                // 文件夹 递归
                deleteFile(file);
                //判断文件夹是否为空 如果是空就删除
                if(file.isDirectory() && file.list().length == 0){
                    file.delete();
                }
            }
        }
        src.delete();
    }

    public static void copyFile(File src, File dest) throws IOException {
        //判断极端情况
        if(!src.exists()){
            System.out.println("源路径不存在！");
        }else {
            //2.进入文件夹 遍历
            File[] files = src.listFiles();
            for (File file : files) {
                //3.判断 是文件 拷贝
                if (file.isFile()) {
                    dest.mkdirs();
                    FileInputStream fis = new FileInputStream(file);
                    FileOutputStream fos = new FileOutputStream(new File(dest, file.getName()));
                    byte[] bytes = new byte[1024];
                    int len;
                    while ((len = fis.read(bytes)) != -1) {
                        fos.write(bytes, 0, len);
                    }
                    fos.close();
                    fis.close();
                } else {
                    // 是文件夹 递归
                    copyFile(file, new File(dest, file.getName()));

                }

            }
        }


    }


}
